﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using Clases;
using Clases.Clases;
using Clases.Properties;
using Clases.ClasesPersistentes;
using Clases.Estructuras;

namespace Clases.Gestores
{
     public class GestorSesion
    {
        private static Usuario _usuario = null;
        private static Boolean _sesionIniciada = false;


        public static Boolean iniciarSesion(String pusuario, String pcontrasenna)
        {
            Boolean sesionIniciada = false;

            String contrasennaCifrada = encriptar(pcontrasenna);
            DaoUsuario dao = new DaoUsuario();
            Usuario tmpUsuario = dao.buscarUsuarioSesion(pusuario, contrasennaCifrada);

            if (tmpUsuario.nombre != null)
            {
                sesionIniciada = true;
                setInicioSesion(sesionIniciada);
                persistirUsuario(tmpUsuario.nombreUsuario, tmpUsuario.rol.nombre);

                GestorAccion.insertarAccion(StrAcciones.iniciarSesion, tmpUsuario.nombreUsuario);
            }

            return sesionIniciada;
        }

        public static void cerrarSesion()
        {
            GestorAccion.insertarAccion(StrAcciones.cerrarSesion, Properties.Settings.Default.nombreUsuario);
            Properties.Settings.Default.nombreUsuario = "";
            Properties.Settings.Default.rol = "";
            
        }

        private static void setInicioSesion(bool psesionIniciada)
        {
            _sesionIniciada = psesionIniciada;
        }

        private static void persistirUsuario(String pnombreUsuario, String pnombreRol)
        {
            Properties.Settings.Default.nombreUsuario = pnombreUsuario;
            Properties.Settings.Default.rol = pnombreRol;
        }

        public static Boolean usuarioTienePermiso(String permiso)
        {

            return false;
        }

        private static string encriptar(string pcontrasenna)
        {
            SHA1CryptoServiceProvider elProveedor = new SHA1CryptoServiceProvider();
            byte[] vectoBytes = System.Text.Encoding.UTF8.GetBytes(pcontrasenna);
            byte[] inArray = elProveedor.ComputeHash(vectoBytes);
            elProveedor.Clear();
            return Convert.ToBase64String(inArray);
        }


    }
}
